home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / glide.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1979-12-31  |  2.5 KB  |  113 lines

  1. 10  KEY(1) ON
  2. 20  DIM A(85),B(85),C(85),P(85),SUM(85)
  3. 30  CLS
  4. 40  PRINT"This program generates line automatons."
  5. 45  PRINT:PRINT"and follows the general scheme given in the computer recreation"
  6. 47  PRINT:PRINT"column of SCIENTIFIC AMERICAN."
  7. 50  PRINT:PRINT"This particular program uses only two states(on=1 or off=0)."
  8. 55  PRINT:PRINT"A handy tip; if you want to stop the program"
  9. 57  PRINT"during execution just hit F1."
  10. 60  PRINT:PRINT"Before starting,if you would like printout during operation"
  11. 70  PRINT"please input y";
  12. 80  CMD$=INKEY$:IF CMD$="" THEN 80
  13. 85  IF CMD$=CHR$(89) THEN ANS$="y"
  14. 87  IF CMD$=CHR$(121) THEN ANS$="y"
  15. 90  PRINT:PRINT:PRINT"Enter the radius for play";
  16. 100  INPUT R
  17. 110  PRINT:PRINT"This gives you a maximum sum of";(2*R)+1;"for any element."
  18. 120  PRINT:PRINT"Now enter the next state of the element for each sum."
  19. 130  N=(2*R)+1
  20. 140  FOR S=0 TO N
  21. 150  PRINT"Now enter new value for sum=";S;
  22. 160  INPUT P(S)
  23. 170  SUM(S)=S
  24. 180  NEXT S
  25. 190  CLS
  26. 200  PRINT"If you would like to input your own data hit RETURN."
  27. 210  PRINT"Otherwise a random input set is used."
  28. 220  CMD$=INKEY$:IF CMD$="" THEN 220
  29. 224  IF CMD$=CHR$(13) THEN 250
  30. 230  CLS:GOSUB 610
  31. 240  CLS:GOTO 300
  32. 250  CLS:PRINT "Now enter input values (up to 80)."
  33. 260  FOR I=1 TO 81
  34. 270  PRINT"Input";I:
  35. 280  INPUT A(I)
  36. 290  NEXT I
  37. 300  CLS
  38. 305  LPRINT CHR$(27)"m"CHR$(4)
  39. 310  GOSUB 800
  40. 320  FOR I=1 TO 80
  41. 330  A(0)=A(81):A(82)=A(1)
  42. 340  C(I)=0
  43. 345  ON KEY(1)GOSUB 910
  44. 350  FOR Z=I-R TO I+R
  45. 360  IF Z<0 THEN Z=1
  46. 370  C(I)=C(I)+A(Z)
  47. 380  NEXT Z
  48. 390  FOR S=0 TO N
  49. 400  IF C(I)=SUM(S) THEN B(I)=P(S)
  50. 410  NEXT S
  51. 420  A$=CHR$(178)
  52. 430  B$=" "
  53. 440  IF B(I)=0 THEN 470
  54. 450  PRINT A$;
  55. 455  IF ANS$="y" THEN LPRINT CHR$(140);
  56. 460  GOTO 480
  57. 470  PRINT B$;
  58. 475  IF ANS$="y" THEN LPRINT B$;
  59. 480  NEXT I
  60. 490  FOR I=1 TO 81
  61. 500  A(I)=B(I)
  62. 510  NEXT I
  63. 520  ON KEY(1) GOSUB 910
  64. 530  GOTO 320
  65. 540  CLS:PRINT"GLIDER is over.Would you like a copy of the comparison table for the run(Y or N)";
  66. 550  CMD$=INKEY$:IF CMD$="" THEN 550
  67. 554  IF CMD$=CHR$(89) THEN GOSUB 660
  68. 556  IF CMD$=CHR$(121) THEN GOSUB 660
  69. 560  PRINT:PRINT"Would you like a copy of the data input (Y or N)";
  70. 570  CMD$=INKEY$:IF CMD$="" THEN 570
  71. 574  IF CMD$=CHR$(89) THEN GOSUB 730
  72. 576  IF CMD$=CHR$(121) THEN GOSUB 730
  73. 580  PRINT:PRINT"Would you like to continue (Y or N)";
  74. 590  CMD$=INKEY$:IF CMD$="" THEN 590
  75. 595  IF CMD$=CHR$(78) THEN 600
  76. 597  IF CMD$=CHR$(110) THEN 600
  77. 598  GOTO 60
  78. 600  END
  79. 610  RANDOMIZE
  80. 620  FOR I=35 TO 45
  81. 630  IF 1*RND<0.5 THEN A(I)=0 ELSE A(I)=1
  82. 640  NEXT I
  83. 642  FOR I=1 TO 34:A(I)=0:NEXT
  84. 644  FOR I=46 TO 80:A(I)=0:NEXT
  85. 650  RETURN
  86. 660  L1$="SUM"
  87. 670  L2$="NEWSTATE"
  88. 680  LPRINT,USING "\    \      \            \";L1$;L2$
  89. 690  FOR S=0 TO N
  90. 700  LPRINT,USING "  ##             ##";S;P(S)
  91. 710  NEXT S
  92. 720  RETURN
  93. 730  L3$="NO."
  94. 740  L4$="INPUT VALUE"
  95. 750  LPRINT, USING"\   \   \           \";L3$;L4$
  96. 760  FOR I=1 TO 81
  97. 770  LPRINT,USING"  ##          ##";I;A(I)
  98. 780  NEXT I
  99. 790  RETURN
  100. 800  A$=CHR$(178)
  101. 810  B$=" "
  102. 820  FOR I=1 TO 80
  103. 830  IF A(I)=0 THEN 870
  104. 840  PRINT A$;
  105. 850  IF ANS$="y" THEN LPRINT CHR$(140);
  106. 860  GOTO 890
  107. 870  PRINT B$;
  108. 880  IF ANS$="y" THEN LPRINT B$;
  109. 890  NEXT I
  110. 900  RETURN
  111. 910  GOTO 540
  112. 920  RETURN
  113.